package com.toft.widgets.workflow.service;
import java.util.List;

import com.toft.widgets.workflow.taskrole.Assignable;

/**
 * 规则服务接口
 * 
 * @author 邹庆林
 * @version 1.0
 */
public interface IRegulationService {

	/**
	 * 获取创建动态任务的规则
	 * 
	 * @param code
	 *            规则代码
	 * @return 创建任务规则列表，列表元素是具体规则
	 */
	List getDynamicTaskCreateRule(String code);

	/**
	 * 获取动态任务参与者的规则
	 * 
	 * @param code
	 *            规则代码
	 * @param userCode
	 *            当前登陆用户
	 * @return 任务参与者，参与者是group还是user
	 */
	Assignable getDynamicTaskParticipatorRule(String code, String agencyId, String userCode);

	/**
	 * 在动态创建任务时，要过滤掉不确定的机构
	 * 
	 * @param code
	 *            规则代码
	 * @param param
	 *            HashMap类型，该Map中存放机构Id
	 * @return 任务参与者，该参与者如果为null，则说明是不确定的机构
	 */
	// Assignable getTaskRuleWithFilter(String code, Map param);

	/**
	 * 获取普通任务参与者的规则
	 * 
	 * @param code
	 *            任务参与者规则代码
	 * @param userCode
	 *            当前登陆用户
	 * @return 任务参与者，参与者是group还是user
	 */
	Assignable getTaskParticipatorRule(String code, String agencyId, String departmentId, String userCode);

	/**
	 * 获取会签任务规则
	 * 
	 * @param code
	 *            会签节点规则
	 * @param agencyId
	 *            模块标识
	 * @param departmentId
	 *            客户标识
	 * @param userCode
	 *            当前登陆用户
	 * @return 返回一个岗位列表，列表元素是具体用户code
	 */
	List getCounterSignature(String code, String agencyId, String departmentId, String userCode);

}
